Setup chunk
Setup reticulate
knitr::opts_chunk$set(fig.width = 8)
knitr::opts_knit$set(root.dir = normalizePath(".."))
knitr::opts_knit$get("root.dir")
[1] "/nas/groups/treutlein/USERS/tomasgomes/projects/liver_regen"
Load libraries
library(reticulate)
knitr::knit_engines$set(python = reticulate::eng_python)
py_available(initialize = FALSE)
[1] TRUE
use_python(Sys.which("python"))
py_config()
python: /home/tpires/bin/miniconda3/bin/python
libpython: /home/tpires/bin/miniconda3/lib/libpython3.8.so
pythonhome: /home/tpires/bin/miniconda3:/home/tpires/bin/miniconda3
version: 3.8.3 (default, May 19 2020, 18:47:26) [GCC 7.3.0]
numpy: /home/tpires/bin/miniconda3/lib/python3.8/site-packages/numpy
numpy_version: 1.19.0
NOTE: Python version was forced by RETICULATE_PYTHON
Functions
getDPT = function(x){
return(destiny:::dpt_for_branch(destiny::branch_divide(x, integer(0L)),
min(destiny::branch_divide(x, integer(0L))@branch[, 1],
na.rm = TRUE)))
}
CVgam = function (formula, data, nfold = 10, debug.level = 0, method = "glm.fit",
printit = TRUE, cvparts = NULL, seed = 29){
# modified from the `gamclass` package to use gam::gam
if (is.null(cvparts)) {
set.seed(seed)
cvparts <- sample(1:nfold, nrow(data), replace = TRUE)
}
folds <- unique(cvparts)
khat <- hat <- numeric(nrow(data))
scale.gam <- summary(gam::gam(formula, data = data, method = method,
family = mgcv::betar(link = "logit", eps = 0.00001)))$scale
for (i in folds) {
trainrows <- cvparts != i
testrows <- cvparts == i
elev.gam <- gam::gam(formula, data = data[trainrows, ],
method = method,
family = mgcv::betar(link = "logit", eps = 0.00001))
hat[testrows] <- predict(elev.gam, newdata = data[testrows,], select = T, type = "response")
res <- residuals(elev.gam)
}
y <- eval(formula[[2]], envir = as.data.frame(data))
res <- y - hat
cvscale <- sum(res^2)/length(res)
prntvec <- c(GAMscale = scale.gam, `CV-mse-GAM ` = cvscale)
if (printit)
print(round(prntvec, 4))
invisible(list(fitted = hat, resid = res, cvscale = cvscale,
scale.gam = scale.gam))
}
fittingFunc = function(g){
t = sub_dat$zonation_pt
gene_fit_p = c()
gene_fit_vals = data.frame(row.names = 1:100)
z = sub_dat@assays$SCT@data[g,]
d = data.frame(z=z, t=t)
tmp = suppressMessages(gam(z ~ ns(t, df = 3), data=d))
# bins for model fitting
bb = seq(min(t), max(t), length.out = 100)
gene_fit_vals[,g] = suppressMessages(predict(tmp,
newdata = data.frame(t = bb)))
p = summary(tmp)$parametric.anova$`Pr(>F)`[1]
gene_fit_p = c(gene_fit_p, p)
names(gene_fit_p)[length(gene_fit_p)] = g
return(list("fits" = gene_fit_vals, "pval" = gene_fit_p))
}
minmax_scale = function(x){
return((x-min(x))/(max(x)-min(x)))
}
getTopTerms = function(godf, topt = 100, ncl = 5, nt = 2){
topt = if(nrow(godf)<topt) nrow(godf) else topt
if(nrow(godf)<ncl) return(godf)
df = godf[1:topt,]
genes = sapply(df$geneID, function(x) strsplit(x, "/"))
resmat = matrix(0, length(genes), length(genes))
for(i in 1:length(genes)){
for(j in 1:length(genes)){
resmat[i,j] = length(intersect(genes[[i]], genes[[j]]))/length(genes[[i]])
}
}
cl = hclust(dist(resmat), method = "ward.D2")
cl = cutree(cl, ncl)
res_df = data.frame("Description" = df$Description, "qvalue" = df$qvalue, "geneID" = df$geneID,
cl, stringsAsFactors = F)
res_df = res_df[order(res_df$qvalue, decreasing = F),]
topterms = unlist(tapply(res_df$Description, res_df$cl, function(x) x[1:nt]))
res_df = res_df[res_df$Description %in% topterms,]
return(res_df)
}
Load data (from all cells)
getDPT = function(x){
return(destiny:::dpt_for_branch(destiny::branch_divide(x, integer(0L)),
min(destiny::branch_divide(x, integer(0L))@branch[, 1],
na.rm = TRUE)))
}
CVgam = function (formula, data, nfold = 10, debug.level = 0, method = "glm.fit",
printit = TRUE, cvparts = NULL, seed = 29){
# modified from the `gamclass` package to use gam::gam
if (is.null(cvparts)) {
set.seed(seed)
cvparts <- sample(1:nfold, nrow(data), replace = TRUE)
}
folds <- unique(cvparts)
khat <- hat <- numeric(nrow(data))
scale.gam <- summary(gam::gam(formula, data = data, method = method,
family = mgcv::betar(link = "logit", eps = 0.00001)))$scale
for (i in folds) {
trainrows <- cvparts != i
testrows <- cvparts == i
elev.gam <- gam::gam(formula, data = data[trainrows, ],
method = method,
family = mgcv::betar(link = "logit", eps = 0.00001))
hat[testrows] <- predict(elev.gam, newdata = data[testrows,], select = T, type = "response")
res <- residuals(elev.gam)
}
y <- eval(formula[[2]], envir = as.data.frame(data))
res <- y - hat
cvscale <- sum(res^2)/length(res)
prntvec <- c(GAMscale = scale.gam, `CV-mse-GAM ` = cvscale)
if (printit)
print(round(prntvec, 4))
invisible(list(fitted = hat, resid = res, cvscale = cvscale,
scale.gam = scale.gam))
}
fittingFunc = function(g){
t = sub_dat$zonation_pt
gene_fit_p = c()
gene_fit_vals = data.frame(row.names = 1:100)
z = sub_dat@assays$SCT@data[g,]
d = data.frame(z=z, t=t)
tmp = suppressMessages(gam(z ~ ns(t, df = 3), data=d))
# bins for model fitting
bb = seq(min(t), max(t), length.out = 100)
gene_fit_vals[,g] = suppressMessages(predict(tmp,
newdata = data.frame(t = bb)))
p = summary(tmp)$parametric.anova$`Pr(>F)`[1]
gene_fit_p = c(gene_fit_p, p)
names(gene_fit_p)[length(gene_fit_p)] = g
return(list("fits" = gene_fit_vals, "pval" = gene_fit_p))
}
minmax_scale = function(x){
return((x-min(x))/(max(x)-min(x)))
}
getTopTerms = function(godf, topt = 100, ncl = 5, nt = 2){
topt = if(nrow(godf)<topt) nrow(godf) else topt
if(nrow(godf)<ncl) return(godf)
df = godf[1:topt,]
genes = sapply(df$geneID, function(x) strsplit(x, "/"))
resmat = matrix(0, length(genes), length(genes))
for(i in 1:length(genes)){
for(j in 1:length(genes)){
resmat[i,j] = length(intersect(genes[[i]], genes[[j]]))/length(genes[[i]])
}
}
cl = hclust(dist(resmat), method = "ward.D2")
cl = cutree(cl, ncl)
res_df = data.frame("Description" = df$Description, "qvalue" = df$qvalue, "geneID" = df$geneID,
cl, stringsAsFactors = F)
res_df = res_df[order(res_df$qvalue, decreasing = F),]
topterms = unlist(tapply(res_df$Description, res_df$cl, function(x) x[1:nt]))
res_df = res_df[res_df$Description %in% topterms,]
return(res_df)
}
Subset LSEC
allcells_css = readRDS(file = "data/processed/allcells_css.RDS")
Cluster and get markers
all_end_cells = allcells_css[,grepl("LSEC", allcells_css@meta.data$allcells_clusters)]
all_end_cells = suppressWarnings(SCTransform(all_end_cells, do.correct.umi = T, verbose = F,
vars.to.regress=c("unique_name","nCount_RNA"),
variable.features.rv.th = 1, seed.use = 1,
return.only.var.genes = F,
variable.features.n = NULL))
all_end_cells = RunPCA(all_end_cells, verbose = F)
all_end_cells = RunUMAP(all_end_cells, dims = 1:25, verbose = F)
DimPlot(all_end_cells, reduction = "umap", group.by = "Condition")
DimPlot(all_end_cells, reduction = "umap", group.by = "allcells_simp")
DimPlot(all_end_cells, reduction = "umap", group.by = "Donor")
DimPlot(all_end_cells, reduction = "umap", group.by = "Phase")
FeaturePlot(all_end_cells, reduction = "umap", features = c("MKI67", "ALB", "S100A8", "COLEC11",
"CLEC1B", "CLEC14A", "AQP1", "MGP",
"LYVE1", "PROX1", "CD14", "PECAM1",
"VWF", "INMT", "PLVAP", "RBP7"))
Annotate the clusters
all_end_cells = FindNeighbors(all_end_cells, reduction = "pca", dims = 1:25,
prune.SNN = 1/5, force.recalc = T, graph.name = "pca25")
Computing nearest neighbor graph
Computing SNN
all_end_cells = FindClusters(all_end_cells, algorithm = 2, verbose = F, graph.name = "pca25",
resolution = seq(0.1, 2, 0.1))
DimPlot(all_end_cells, reduction = "umap", group.by = "pca25_res.1", label = T)
Using `as.character()` on a quosure is deprecated as of rlang 0.3.0.
Please use `as_label()` or `as_name()` instead.
This warning is displayed once per session.
DimPlot(all_end_cells, reduction = "umap", group.by = "Donor", label = F)
DimPlot(all_end_cells, reduction = "umap", group.by = "Condition", label = F)
all_end_cells = SetIdent(all_end_cells, value = "pca25_res.1")
Redo all w/o contaminating cells (only ECs of any type)
Markers for filtered clusters
DimPlot(only_end_cells, reduction = "umap", group.by = "pca25_res.0.9", label = T)
DimPlot(only_end_cells, reduction = "umap", group.by = "endo_simp", label = T)
DimPlot(only_end_cells, reduction = "umap", group.by = "Donor", label = F)
DimPlot(only_end_cells, reduction = "umap", group.by = "Condition", label = F)
Annotate the clusters for ECs only
annot = c("0" = "Midzonal LSEC",
"1" = "Pericentral LSEC",
"2" = "LSEC (stress)",
"3" = "Periportal LSEC",
"4" = "EC non-LSEC",
"5" = "LSEC (interferon)",
"6" = "LSEC (remodelling)",
"7" = "LSEC (high MT 1)",
"8" = "LSEC (high MT 2)",
"9" = "LSEC (fenestr.)",
"10" = "Lymphatic EC",
"11" = "Cycling cells",
"12" = "Periportal LSEC")
clnames = data.frame("endoOnly_annot" = only_end_cells@meta.data$pca25_res.0.9)
rownames(clnames) = colnames(only_end_cells)
clnames$endo_spec = plyr::revalue(clnames$endoOnly_annot, annot)
clnames$endo_simp = as.character(clnames$endo_spec)
only_end_cells = AddMetaData(only_end_cells, metadata = clnames)
DimPlot(only_end_cells, reduction = "umap", group.by = "endo_simp", label = F)
saveRDS(only_end_cells, file = "./results/endothelial/only_end_cells.RDS")
Get condition markers for each cluster
Plot abundance of clusters per condition
df_cnt = table(only_end_cells$endo_simp, only_end_cells$Condition)
df_cnt_perCond = reshape2::melt(apply(df_cnt, 2, function(x) round(x/sum(x)*100, 1)))
df_cnt_perCl = reshape2::melt(apply(df_cnt, 1, function(x) round(x/sum(x)*100, 1)))
mat_cnt_all = reshape2::dcast(data = df_cnt_perCond, formula = Var1 ~ Var2, value.var = "value")
rownames(mat_cnt_all) = mat_cnt_all$Var1
mat_cnt_all = mat_cnt_all[,-1]
ctord = hclust(dist(mat_cnt_all[,c(2,1,3)]))$order
heatp = pheatmap::pheatmap(mat_cnt_all[ctord,c(2,1,3)], cluster_cols = F, cluster_rows = F,
treeheight_row = F, display_numbers = T,
number_color = c("black","white")[as.integer(mat_cnt_all[ctord,c(2,1,3)]>25)+1],
color = colorRampPalette(brewer.pal(n = 9, name = "Blues"))(100),
fontsize_row = 8, fontsize_col = 8, angle_col = 0)
mat_cnt_all = reshape2::dcast(data = df_cnt_perCl, formula = Var1 ~ Var2, value.var = "value")
rownames(mat_cnt_all) = mat_cnt_all$Var1
mat_cnt_all = t(mat_cnt_all[,-1])
ctord = hclust(dist(mat_cnt_all[,c(2,1,3)]))$order
heatp = pheatmap::pheatmap(mat_cnt_all[ctord,c(2,1,3)], cluster_cols = F, cluster_rows = F,
treeheight_row = F, display_numbers = T,
number_color = c("black", "white")[as.integer(mat_cnt_all[ctord,c(2,1,3)]>50)+1],
color = colorRampPalette(brewer.pal(n = 9, name = "Blues"))(100),
fontsize_row = 8, fontsize_col = 8, angle_col = 0)
only_end_cells = SetIdent(only_end_cells, value = "endo_simp")
mkend_simp = FindAllMarkers(only_end_cells, logfc.threshold = 0.2, pseudocount.use = 0.1)
write.csv(mkend_simp[mkend_simp$p_val_adj<=0.05,],
file = "results/endothelial/markers_endo_subpop_simp.csv", row.names = T, quote = F)
Make different subsets to test
df_cnt = table(only_end_cells$endo_simp, only_end_cells$Condition)
df_cnt_perCond = reshape2::melt(apply(df_cnt, 2, function(x) round(x/sum(x)*100, 1)))
df_cnt_perCl = reshape2::melt(apply(df_cnt, 1, function(x) round(x/sum(x)*100, 1)))
mat_cnt_all = reshape2::dcast(data = df_cnt_perCond, formula = Var1 ~ Var2, value.var = "value")
rownames(mat_cnt_all) = mat_cnt_all$Var1
mat_cnt_all = mat_cnt_all[,-1]
ctord = hclust(dist(mat_cnt_all[,c(2,1,3)]))$order
heatp = pheatmap::pheatmap(mat_cnt_all[ctord,c(2,1,3)], cluster_cols = F, cluster_rows = F,
treeheight_row = F, display_numbers = T,
number_color = c("black","white")[as.integer(mat_cnt_all[ctord,c(2,1,3)]>25)+1],
color = colorRampPalette(brewer.pal(n = 9, name = "Blues"))(100),
fontsize_row = 8, fontsize_col = 8, angle_col = 0)
mat_cnt_all = reshape2::dcast(data = df_cnt_perCl, formula = Var1 ~ Var2, value.var = "value")
rownames(mat_cnt_all) = mat_cnt_all$Var1
mat_cnt_all = t(mat_cnt_all[,-1])
ctord = hclust(dist(mat_cnt_all[,c(2,1,3)]))$order
heatp = pheatmap::pheatmap(mat_cnt_all[ctord,c(2,1,3)], cluster_cols = F, cluster_rows = F,
treeheight_row = F, display_numbers = T,
number_color = c("black", "white")[as.integer(mat_cnt_all[ctord,c(2,1,3)]>50)+1],
color = colorRampPalette(brewer.pal(n = 9, name = "Blues"))(100),
fontsize_row = 8, fontsize_col = 8, angle_col = 0)
only_end_cells = SetIdent(only_end_cells, value = "endo_simp")
mkend_simp = FindAllMarkers(only_end_cells, logfc.threshold = 0.2, pseudocount.use = 0.1)
Calculating cluster LSEC (stress)
| | 0 % ~calculating
|+ | 1 % ~27s
|++ | 2 % ~28s
|++ | 3 % ~28s
|+++ | 4 % ~27s
|+++ | 5 % ~27s
|++++ | 7 % ~27s
|++++ | 8 % ~27s
|+++++ | 9 % ~27s
|+++++ | 10% ~26s
|++++++ | 11% ~26s
|++++++ | 12% ~26s
|+++++++ | 13% ~25s
|++++++++ | 14% ~25s
|++++++++ | 15% ~25s
|+++++++++ | 16% ~24s
|+++++++++ | 17% ~24s
|++++++++++ | 18% ~24s
|++++++++++ | 20% ~23s
|+++++++++++ | 21% ~23s
|+++++++++++ | 22% ~23s
|++++++++++++ | 23% ~22s
|++++++++++++ | 24% ~22s
|+++++++++++++ | 25% ~22s
|++++++++++++++ | 26% ~21s
|++++++++++++++ | 27% ~21s
|+++++++++++++++ | 28% ~21s
|+++++++++++++++ | 29% ~21s
|++++++++++++++++ | 30% ~20s
|++++++++++++++++ | 32% ~20s
|+++++++++++++++++ | 33% ~20s
|+++++++++++++++++ | 34% ~19s
|++++++++++++++++++ | 35% ~19s
|++++++++++++++++++ | 36% ~19s
|+++++++++++++++++++ | 37% ~18s
|++++++++++++++++++++ | 38% ~18s
|++++++++++++++++++++ | 39% ~18s
|+++++++++++++++++++++ | 40% ~17s
|+++++++++++++++++++++ | 41% ~17s
|++++++++++++++++++++++ | 42% ~17s
|++++++++++++++++++++++ | 43% ~16s
|+++++++++++++++++++++++ | 45% ~16s
|+++++++++++++++++++++++ | 46% ~16s
|++++++++++++++++++++++++ | 47% ~15s
|++++++++++++++++++++++++ | 48% ~15s
|+++++++++++++++++++++++++ | 49% ~15s
|+++++++++++++++++++++++++ | 50% ~15s
|++++++++++++++++++++++++++ | 51% ~14s
|+++++++++++++++++++++++++++ | 52% ~14s
|+++++++++++++++++++++++++++ | 53% ~14s
|++++++++++++++++++++++++++++ | 54% ~13s
|++++++++++++++++++++++++++++ | 55% ~13s
|+++++++++++++++++++++++++++++ | 57% ~13s
|+++++++++++++++++++++++++++++ | 58% ~12s
|++++++++++++++++++++++++++++++ | 59% ~12s
|++++++++++++++++++++++++++++++ | 60% ~12s
|+++++++++++++++++++++++++++++++ | 61% ~11s
|+++++++++++++++++++++++++++++++ | 62% ~11s
|++++++++++++++++++++++++++++++++ | 63% ~11s
|+++++++++++++++++++++++++++++++++ | 64% ~10s
|+++++++++++++++++++++++++++++++++ | 65% ~10s
|++++++++++++++++++++++++++++++++++ | 66% ~10s
|++++++++++++++++++++++++++++++++++ | 67% ~09s
|+++++++++++++++++++++++++++++++++++ | 68% ~09s
|+++++++++++++++++++++++++++++++++++ | 70% ~09s
|++++++++++++++++++++++++++++++++++++ | 71% ~09s
|++++++++++++++++++++++++++++++++++++ | 72% ~08s
|+++++++++++++++++++++++++++++++++++++ | 73% ~08s
|+++++++++++++++++++++++++++++++++++++ | 74% ~08s
|++++++++++++++++++++++++++++++++++++++ | 75% ~07s
|+++++++++++++++++++++++++++++++++++++++ | 76% ~07s
|+++++++++++++++++++++++++++++++++++++++ | 77% ~07s
|++++++++++++++++++++++++++++++++++++++++ | 78% ~06s
|++++++++++++++++++++++++++++++++++++++++ | 79% ~06s
|+++++++++++++++++++++++++++++++++++++++++ | 80% ~06s
|+++++++++++++++++++++++++++++++++++++++++ | 82% ~05s
|++++++++++++++++++++++++++++++++++++++++++ | 83% ~05s
|++++++++++++++++++++++++++++++++++++++++++ | 84% ~05s
|+++++++++++++++++++++++++++++++++++++++++++ | 85% ~04s
|+++++++++++++++++++++++++++++++++++++++++++ | 86% ~04s
|++++++++++++++++++++++++++++++++++++++++++++ | 87% ~04s
|+++++++++++++++++++++++++++++++++++++++++++++ | 88% ~03s
|+++++++++++++++++++++++++++++++++++++++++++++ | 89% ~03s
|++++++++++++++++++++++++++++++++++++++++++++++ | 90% ~03s
|++++++++++++++++++++++++++++++++++++++++++++++ | 91% ~03s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 92% ~02s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 93% ~02s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 95% ~02s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~01s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~01s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~01s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=29s
Calculating cluster EC non-LSEC
| | 0 % ~calculating
|+ | 1 % ~01m 14s
|++ | 2 % ~01m 15s
|++ | 3 % ~01m 14s
|+++ | 4 % ~01m 13s
|+++ | 5 % ~01m 13s
|++++ | 6 % ~01m 12s
|++++ | 7 % ~01m 11s
|+++++ | 8 % ~01m 10s
|+++++ | 9 % ~01m 09s
|++++++ | 10% ~01m 08s
|++++++ | 11% ~01m 07s
|+++++++ | 12% ~01m 07s
|+++++++ | 13% ~01m 06s
|++++++++ | 14% ~01m 05s
|++++++++ | 15% ~01m 04s
|+++++++++ | 16% ~01m 04s
|+++++++++ | 17% ~01m 03s
|++++++++++ | 18% ~01m 02s
|++++++++++ | 19% ~01m 01s
|+++++++++++ | 20% ~01m 01s
|+++++++++++ | 21% ~60s
|++++++++++++ | 22% ~59s
|++++++++++++ | 23% ~58s
|+++++++++++++ | 24% ~58s
|+++++++++++++ | 26% ~57s
|++++++++++++++ | 27% ~56s
|++++++++++++++ | 28% ~55s
|+++++++++++++++ | 29% ~54s
|+++++++++++++++ | 30% ~54s
|++++++++++++++++ | 31% ~53s
|++++++++++++++++ | 32% ~52s
|+++++++++++++++++ | 33% ~51s
|+++++++++++++++++ | 34% ~51s
|++++++++++++++++++ | 35% ~50s
|++++++++++++++++++ | 36% ~49s
|+++++++++++++++++++ | 37% ~48s
|+++++++++++++++++++ | 38% ~47s
|++++++++++++++++++++ | 39% ~47s
|++++++++++++++++++++ | 40% ~46s
|+++++++++++++++++++++ | 41% ~45s
|+++++++++++++++++++++ | 42% ~44s
|++++++++++++++++++++++ | 43% ~44s
|++++++++++++++++++++++ | 44% ~43s
|+++++++++++++++++++++++ | 45% ~42s
|+++++++++++++++++++++++ | 46% ~41s
|++++++++++++++++++++++++ | 47% ~41s
|++++++++++++++++++++++++ | 48% ~40s
|+++++++++++++++++++++++++ | 49% ~39s
|+++++++++++++++++++++++++ | 50% ~38s
|++++++++++++++++++++++++++ | 51% ~37s
|+++++++++++++++++++++++++++ | 52% ~37s
|+++++++++++++++++++++++++++ | 53% ~36s
|++++++++++++++++++++++++++++ | 54% ~35s
|++++++++++++++++++++++++++++ | 55% ~34s
|+++++++++++++++++++++++++++++ | 56% ~34s
|+++++++++++++++++++++++++++++ | 57% ~33s
|++++++++++++++++++++++++++++++ | 58% ~32s
|++++++++++++++++++++++++++++++ | 59% ~31s
|+++++++++++++++++++++++++++++++ | 60% ~30s
|+++++++++++++++++++++++++++++++ | 61% ~30s
|++++++++++++++++++++++++++++++++ | 62% ~29s
|++++++++++++++++++++++++++++++++ | 63% ~28s
|+++++++++++++++++++++++++++++++++ | 64% ~27s
|+++++++++++++++++++++++++++++++++ | 65% ~27s
|++++++++++++++++++++++++++++++++++ | 66% ~26s
|++++++++++++++++++++++++++++++++++ | 67% ~25s
|+++++++++++++++++++++++++++++++++++ | 68% ~24s
|+++++++++++++++++++++++++++++++++++ | 69% ~23s
|++++++++++++++++++++++++++++++++++++ | 70% ~23s
|++++++++++++++++++++++++++++++++++++ | 71% ~22s
|+++++++++++++++++++++++++++++++++++++ | 72% ~21s
|+++++++++++++++++++++++++++++++++++++ | 73% ~20s
|++++++++++++++++++++++++++++++++++++++ | 74% ~20s
|++++++++++++++++++++++++++++++++++++++ | 76% ~19s
|+++++++++++++++++++++++++++++++++++++++ | 77% ~18s
|+++++++++++++++++++++++++++++++++++++++ | 78% ~17s
|++++++++++++++++++++++++++++++++++++++++ | 79% ~16s
|++++++++++++++++++++++++++++++++++++++++ | 80% ~16s
|+++++++++++++++++++++++++++++++++++++++++ | 81% ~15s
|+++++++++++++++++++++++++++++++++++++++++ | 82% ~14s
|++++++++++++++++++++++++++++++++++++++++++ | 83% ~13s
|++++++++++++++++++++++++++++++++++++++++++ | 84% ~13s
|+++++++++++++++++++++++++++++++++++++++++++ | 85% ~12s
|+++++++++++++++++++++++++++++++++++++++++++ | 86% ~11s
|++++++++++++++++++++++++++++++++++++++++++++ | 87% ~10s
|++++++++++++++++++++++++++++++++++++++++++++ | 88% ~09s
|+++++++++++++++++++++++++++++++++++++++++++++ | 89% ~09s
|+++++++++++++++++++++++++++++++++++++++++++++ | 90% ~08s
|++++++++++++++++++++++++++++++++++++++++++++++ | 91% ~07s
|++++++++++++++++++++++++++++++++++++++++++++++ | 92% ~06s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 93% ~05s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 94% ~05s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 95% ~04s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~03s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~02s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~02s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=01m 16s
Calculating cluster LSEC (remodelling)
| | 0 % ~calculating
|+ | 1 % ~33s
|++ | 2 % ~32s
|++ | 3 % ~33s
|+++ | 4 % ~33s
|+++ | 5 % ~33s
|++++ | 6 % ~33s
|++++ | 7 % ~32s
|+++++ | 8 % ~32s
|+++++ | 9 % ~32s
|++++++ | 10% ~31s
|++++++ | 11% ~31s
|+++++++ | 12% ~31s
|+++++++ | 13% ~31s
|++++++++ | 14% ~30s
|++++++++ | 15% ~30s
|+++++++++ | 16% ~30s
|+++++++++ | 17% ~31s
|++++++++++ | 18% ~30s
|++++++++++ | 19% ~30s
|+++++++++++ | 20% ~29s
|+++++++++++ | 21% ~29s
|++++++++++++ | 22% ~28s
|++++++++++++ | 23% ~28s
|+++++++++++++ | 24% ~28s
|+++++++++++++ | 25% ~27s
|++++++++++++++ | 26% ~27s
|++++++++++++++ | 27% ~26s
|+++++++++++++++ | 28% ~26s
|+++++++++++++++ | 29% ~25s
|++++++++++++++++ | 30% ~25s
|++++++++++++++++ | 31% ~25s
|+++++++++++++++++ | 32% ~24s
|+++++++++++++++++ | 33% ~24s
|++++++++++++++++++ | 34% ~24s
|++++++++++++++++++ | 35% ~23s
|+++++++++++++++++++ | 36% ~23s
|+++++++++++++++++++ | 37% ~22s
|++++++++++++++++++++ | 38% ~22s
|++++++++++++++++++++ | 39% ~22s
|+++++++++++++++++++++ | 40% ~21s
|+++++++++++++++++++++ | 41% ~21s
|++++++++++++++++++++++ | 42% ~21s
|++++++++++++++++++++++ | 43% ~20s
|+++++++++++++++++++++++ | 44% ~20s
|+++++++++++++++++++++++ | 45% ~20s
|++++++++++++++++++++++++ | 46% ~19s
|++++++++++++++++++++++++ | 47% ~19s
|+++++++++++++++++++++++++ | 48% ~19s
|+++++++++++++++++++++++++ | 49% ~18s
|++++++++++++++++++++++++++ | 51% ~18s
|++++++++++++++++++++++++++ | 52% ~18s
|+++++++++++++++++++++++++++ | 53% ~17s
|+++++++++++++++++++++++++++ | 54% ~17s
|++++++++++++++++++++++++++++ | 55% ~17s
|++++++++++++++++++++++++++++ | 56% ~16s
|+++++++++++++++++++++++++++++ | 57% ~16s
|+++++++++++++++++++++++++++++ | 58% ~15s
|++++++++++++++++++++++++++++++ | 59% ~15s
|++++++++++++++++++++++++++++++ | 60% ~15s
|+++++++++++++++++++++++++++++++ | 61% ~14s
|+++++++++++++++++++++++++++++++ | 62% ~14s
|++++++++++++++++++++++++++++++++ | 63% ~14s
|++++++++++++++++++++++++++++++++ | 64% ~13s
|+++++++++++++++++++++++++++++++++ | 65% ~13s
|+++++++++++++++++++++++++++++++++ | 66% ~12s
|++++++++++++++++++++++++++++++++++ | 67% ~12s
|++++++++++++++++++++++++++++++++++ | 68% ~12s
|+++++++++++++++++++++++++++++++++++ | 69% ~11s
|+++++++++++++++++++++++++++++++++++ | 70% ~11s
|++++++++++++++++++++++++++++++++++++ | 71% ~11s
|++++++++++++++++++++++++++++++++++++ | 72% ~10s
|+++++++++++++++++++++++++++++++++++++ | 73% ~10s
|+++++++++++++++++++++++++++++++++++++ | 74% ~09s
|++++++++++++++++++++++++++++++++++++++ | 75% ~09s
|++++++++++++++++++++++++++++++++++++++ | 76% ~09s
|+++++++++++++++++++++++++++++++++++++++ | 77% ~08s
|+++++++++++++++++++++++++++++++++++++++ | 78% ~08s
|++++++++++++++++++++++++++++++++++++++++ | 79% ~08s
|++++++++++++++++++++++++++++++++++++++++ | 80% ~07s
|+++++++++++++++++++++++++++++++++++++++++ | 81% ~07s
|+++++++++++++++++++++++++++++++++++++++++ | 82% ~07s
|++++++++++++++++++++++++++++++++++++++++++ | 83% ~06s
|++++++++++++++++++++++++++++++++++++++++++ | 84% ~06s
|+++++++++++++++++++++++++++++++++++++++++++ | 85% ~05s
|+++++++++++++++++++++++++++++++++++++++++++ | 86% ~05s
|++++++++++++++++++++++++++++++++++++++++++++ | 87% ~05s
|++++++++++++++++++++++++++++++++++++++++++++ | 88% ~04s
|+++++++++++++++++++++++++++++++++++++++++++++ | 89% ~04s
|+++++++++++++++++++++++++++++++++++++++++++++ | 90% ~04s
|++++++++++++++++++++++++++++++++++++++++++++++ | 91% ~03s
|++++++++++++++++++++++++++++++++++++++++++++++ | 92% ~03s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 93% ~03s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 94% ~02s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 95% ~02s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~01s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~01s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~01s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=36s
Calculating cluster Pericentral LSEC
| | 0 % ~calculating
|+ | 1 % ~49s
|++ | 2 % ~50s
|++ | 3 % ~48s
|+++ | 4 % ~49s
|+++ | 5 % ~51s
|++++ | 6 % ~52s
|++++ | 7 % ~53s
|+++++ | 8 % ~53s
|+++++ | 9 % ~53s
|++++++ | 10% ~53s
|++++++ | 11% ~51s
|+++++++ | 12% ~50s
|+++++++ | 13% ~49s
|++++++++ | 14% ~48s
|++++++++ | 15% ~47s
|+++++++++ | 16% ~46s
|+++++++++ | 17% ~46s
|++++++++++ | 18% ~45s
|++++++++++ | 19% ~44s
|+++++++++++ | 20% ~43s
|+++++++++++ | 21% ~43s
|++++++++++++ | 22% ~42s
|++++++++++++ | 23% ~41s
|+++++++++++++ | 24% ~41s
|+++++++++++++ | 26% ~40s
|++++++++++++++ | 27% ~39s
|++++++++++++++ | 28% ~38s
|+++++++++++++++ | 29% ~38s
|+++++++++++++++ | 30% ~37s
|++++++++++++++++ | 31% ~37s
|++++++++++++++++ | 32% ~36s
|+++++++++++++++++ | 33% ~35s
|+++++++++++++++++ | 34% ~35s
|++++++++++++++++++ | 35% ~34s
|++++++++++++++++++ | 36% ~34s
|+++++++++++++++++++ | 37% ~33s
|+++++++++++++++++++ | 38% ~33s
|++++++++++++++++++++ | 39% ~32s
|++++++++++++++++++++ | 40% ~31s
|+++++++++++++++++++++ | 41% ~31s
|+++++++++++++++++++++ | 42% ~30s
|++++++++++++++++++++++ | 43% ~30s
|++++++++++++++++++++++ | 44% ~29s
|+++++++++++++++++++++++ | 45% ~29s
|+++++++++++++++++++++++ | 46% ~28s
|++++++++++++++++++++++++ | 47% ~27s
|++++++++++++++++++++++++ | 48% ~27s
|+++++++++++++++++++++++++ | 49% ~26s
|+++++++++++++++++++++++++ | 50% ~26s
|++++++++++++++++++++++++++ | 51% ~25s
|+++++++++++++++++++++++++++ | 52% ~25s
|+++++++++++++++++++++++++++ | 53% ~24s
|++++++++++++++++++++++++++++ | 54% ~24s
|++++++++++++++++++++++++++++ | 55% ~23s
|+++++++++++++++++++++++++++++ | 56% ~23s
|+++++++++++++++++++++++++++++ | 57% ~22s
|++++++++++++++++++++++++++++++ | 58% ~22s
|++++++++++++++++++++++++++++++ | 59% ~21s
|+++++++++++++++++++++++++++++++ | 60% ~20s
|+++++++++++++++++++++++++++++++ | 61% ~20s
|++++++++++++++++++++++++++++++++ | 62% ~19s
|++++++++++++++++++++++++++++++++ | 63% ~19s
|+++++++++++++++++++++++++++++++++ | 64% ~18s
|+++++++++++++++++++++++++++++++++ | 65% ~18s
|++++++++++++++++++++++++++++++++++ | 66% ~17s
|++++++++++++++++++++++++++++++++++ | 67% ~17s
|+++++++++++++++++++++++++++++++++++ | 68% ~16s
|+++++++++++++++++++++++++++++++++++ | 69% ~16s
|++++++++++++++++++++++++++++++++++++ | 70% ~15s
|++++++++++++++++++++++++++++++++++++ | 71% ~15s
|+++++++++++++++++++++++++++++++++++++ | 72% ~14s
|+++++++++++++++++++++++++++++++++++++ | 73% ~14s
|++++++++++++++++++++++++++++++++++++++ | 74% ~13s
|++++++++++++++++++++++++++++++++++++++ | 76% ~13s
|+++++++++++++++++++++++++++++++++++++++ | 77% ~12s
|+++++++++++++++++++++++++++++++++++++++ | 78% ~11s
|++++++++++++++++++++++++++++++++++++++++ | 79% ~11s
|++++++++++++++++++++++++++++++++++++++++ | 80% ~10s
|+++++++++++++++++++++++++++++++++++++++++ | 81% ~10s
|+++++++++++++++++++++++++++++++++++++++++ | 82% ~09s
|++++++++++++++++++++++++++++++++++++++++++ | 83% ~09s
|++++++++++++++++++++++++++++++++++++++++++ | 84% ~08s
|+++++++++++++++++++++++++++++++++++++++++++ | 85% ~08s
|+++++++++++++++++++++++++++++++++++++++++++ | 86% ~07s
|++++++++++++++++++++++++++++++++++++++++++++ | 87% ~07s
|++++++++++++++++++++++++++++++++++++++++++++ | 88% ~06s
|+++++++++++++++++++++++++++++++++++++++++++++ | 89% ~06s
|+++++++++++++++++++++++++++++++++++++++++++++ | 90% ~05s
|++++++++++++++++++++++++++++++++++++++++++++++ | 91% ~05s
|++++++++++++++++++++++++++++++++++++++++++++++ | 92% ~04s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 93% ~04s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 94% ~03s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 95% ~03s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~02s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~02s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~01s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=51s
Calculating cluster LSEC (high MT 2)
| | 0 % ~calculating
|+ | 1 % ~02m 22s
|++ | 2 % ~02m 24s
|++ | 3 % ~02m 22s
|+++ | 4 % ~02m 21s
|+++ | 5 % ~02m 19s
|++++ | 6 % ~02m 18s
|++++ | 7 % ~02m 16s
|+++++ | 8 % ~02m 15s
|+++++ | 9 % ~02m 13s
|++++++ | 10% ~02m 12s
|++++++ | 11% ~02m 10s
|+++++++ | 12% ~02m 08s
|+++++++ | 13% ~02m 07s
|++++++++ | 14% ~02m 06s
|++++++++ | 15% ~02m 04s
|+++++++++ | 16% ~02m 03s
|+++++++++ | 17% ~02m 01s
|++++++++++ | 18% ~01m 60s
|++++++++++ | 19% ~01m 58s
|+++++++++++ | 20% ~01m 57s
|+++++++++++ | 21% ~01m 55s
|++++++++++++ | 22% ~01m 54s
|++++++++++++ | 23% ~01m 52s
|+++++++++++++ | 24% ~01m 51s
|+++++++++++++ | 25% ~01m 51s
|++++++++++++++ | 26% ~01m 50s
|++++++++++++++ | 27% ~01m 48s
|+++++++++++++++ | 28% ~01m 47s
|+++++++++++++++ | 29% ~01m 45s
|++++++++++++++++ | 30% ~01m 44s
|++++++++++++++++ | 31% ~01m 42s
|+++++++++++++++++ | 32% ~01m 41s
|+++++++++++++++++ | 33% ~01m 39s
|++++++++++++++++++ | 34% ~01m 38s
|++++++++++++++++++ | 35% ~01m 36s
|+++++++++++++++++++ | 36% ~01m 34s
|+++++++++++++++++++ | 37% ~01m 33s
|++++++++++++++++++++ | 38% ~01m 31s
|++++++++++++++++++++ | 39% ~01m 30s
|+++++++++++++++++++++ | 40% ~01m 28s
|+++++++++++++++++++++ | 41% ~01m 27s
|++++++++++++++++++++++ | 42% ~01m 25s
|++++++++++++++++++++++ | 43% ~01m 24s
|+++++++++++++++++++++++ | 44% ~01m 22s
|+++++++++++++++++++++++ | 45% ~01m 21s
|++++++++++++++++++++++++ | 46% ~01m 19s
|++++++++++++++++++++++++ | 47% ~01m 18s
|+++++++++++++++++++++++++ | 48% ~01m 16s
|+++++++++++++++++++++++++ | 49% ~01m 15s
|++++++++++++++++++++++++++ | 51% ~01m 13s
|++++++++++++++++++++++++++ | 52% ~01m 12s
|+++++++++++++++++++++++++++ | 53% ~01m 10s
|+++++++++++++++++++++++++++ | 54% ~01m 09s
|++++++++++++++++++++++++++++ | 55% ~01m 07s
|++++++++++++++++++++++++++++ | 56% ~01m 06s
|+++++++++++++++++++++++++++++ | 57% ~01m 04s
|+++++++++++++++++++++++++++++ | 58% ~01m 03s
|++++++++++++++++++++++++++++++ | 59% ~01m 01s
|++++++++++++++++++++++++++++++ | 60% ~60s
|+++++++++++++++++++++++++++++++ | 61% ~58s
|+++++++++++++++++++++++++++++++ | 62% ~57s
|++++++++++++++++++++++++++++++++ | 63% ~55s
|++++++++++++++++++++++++++++++++ | 64% ~54s
|+++++++++++++++++++++++++++++++++ | 65% ~52s
|+++++++++++++++++++++++++++++++++ | 66% ~51s
|++++++++++++++++++++++++++++++++++ | 67% ~49s
|++++++++++++++++++++++++++++++++++ | 68% ~48s
|+++++++++++++++++++++++++++++++++++ | 69% ~46s
|+++++++++++++++++++++++++++++++++++ | 70% ~45s
|++++++++++++++++++++++++++++++++++++ | 71% ~43s
|++++++++++++++++++++++++++++++++++++ | 72% ~42s
|+++++++++++++++++++++++++++++++++++++ | 73% ~40s
|+++++++++++++++++++++++++++++++++++++ | 74% ~39s
|++++++++++++++++++++++++++++++++++++++ | 75% ~37s
|++++++++++++++++++++++++++++++++++++++ | 76% ~36s
|+++++++++++++++++++++++++++++++++++++++ | 77% ~34s
|+++++++++++++++++++++++++++++++++++++++ | 78% ~33s
|++++++++++++++++++++++++++++++++++++++++ | 79% ~31s
|++++++++++++++++++++++++++++++++++++++++ | 80% ~30s
|+++++++++++++++++++++++++++++++++++++++++ | 81% ~28s
|+++++++++++++++++++++++++++++++++++++++++ | 82% ~27s
|++++++++++++++++++++++++++++++++++++++++++ | 83% ~25s
|++++++++++++++++++++++++++++++++++++++++++ | 84% ~24s
|+++++++++++++++++++++++++++++++++++++++++++ | 85% ~22s
|+++++++++++++++++++++++++++++++++++++++++++ | 86% ~21s
|++++++++++++++++++++++++++++++++++++++++++++ | 87% ~19s
|++++++++++++++++++++++++++++++++++++++++++++ | 88% ~18s
|+++++++++++++++++++++++++++++++++++++++++++++ | 89% ~16s
|+++++++++++++++++++++++++++++++++++++++++++++ | 90% ~15s
|++++++++++++++++++++++++++++++++++++++++++++++ | 91% ~13s
|++++++++++++++++++++++++++++++++++++++++++++++ | 92% ~12s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 93% ~10s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 94% ~09s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 95% ~07s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~06s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~04s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~03s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=02m 27s
Calculating cluster Midzonal LSEC
| | 0 % ~calculating
|+ | 1 % ~24s
|++ | 2 % ~24s
|++ | 3 % ~24s
|+++ | 4 % ~24s
|+++ | 5 % ~24s
|++++ | 6 % ~24s
|++++ | 7 % ~24s
|+++++ | 8 % ~23s
|+++++ | 9 % ~23s
|++++++ | 10% ~23s
|++++++ | 11% ~23s
|+++++++ | 12% ~22s
|+++++++ | 13% ~22s
|++++++++ | 14% ~22s
|++++++++ | 15% ~22s
|+++++++++ | 16% ~21s
|+++++++++ | 17% ~21s
|++++++++++ | 18% ~21s
|++++++++++ | 19% ~20s
|+++++++++++ | 20% ~20s
|+++++++++++ | 21% ~20s
|++++++++++++ | 22% ~20s
|++++++++++++ | 23% ~19s
|+++++++++++++ | 24% ~19s
|+++++++++++++ | 25% ~19s
|++++++++++++++ | 26% ~19s
|++++++++++++++ | 27% ~18s
|+++++++++++++++ | 28% ~18s
|+++++++++++++++ | 29% ~18s
|++++++++++++++++ | 30% ~18s
|++++++++++++++++ | 31% ~17s
|+++++++++++++++++ | 32% ~17s
|+++++++++++++++++ | 33% ~17s
|++++++++++++++++++ | 34% ~17s
|++++++++++++++++++ | 35% ~16s
|+++++++++++++++++++ | 36% ~16s
|+++++++++++++++++++ | 37% ~16s
|++++++++++++++++++++ | 38% ~16s
|++++++++++++++++++++ | 39% ~15s
|+++++++++++++++++++++ | 40% ~15s
|+++++++++++++++++++++ | 41% ~15s
|++++++++++++++++++++++ | 42% ~15s
|++++++++++++++++++++++ | 43% ~14s
|+++++++++++++++++++++++ | 44% ~14s
|+++++++++++++++++++++++ | 45% ~14s
|++++++++++++++++++++++++ | 46% ~14s
|++++++++++++++++++++++++ | 47% ~13s
|+++++++++++++++++++++++++ | 48% ~13s
|+++++++++++++++++++++++++ | 49% ~13s
|++++++++++++++++++++++++++ | 51% ~13s
|++++++++++++++++++++++++++ | 52% ~12s
|+++++++++++++++++++++++++++ | 53% ~12s
|+++++++++++++++++++++++++++ | 54% ~12s
|++++++++++++++++++++++++++++ | 55% ~12s
|++++++++++++++++++++++++++++ | 56% ~11s
|+++++++++++++++++++++++++++++ | 57% ~11s
|+++++++++++++++++++++++++++++ | 58% ~11s
|++++++++++++++++++++++++++++++ | 59% ~11s
|++++++++++++++++++++++++++++++ | 60% ~10s
|+++++++++++++++++++++++++++++++ | 61% ~10s
|+++++++++++++++++++++++++++++++ | 62% ~10s
|++++++++++++++++++++++++++++++++ | 63% ~10s
|++++++++++++++++++++++++++++++++ | 64% ~09s
|+++++++++++++++++++++++++++++++++ | 65% ~09s
|+++++++++++++++++++++++++++++++++ | 66% ~09s
|++++++++++++++++++++++++++++++++++ | 67% ~09s
|++++++++++++++++++++++++++++++++++ | 68% ~08s
|+++++++++++++++++++++++++++++++++++ | 69% ~08s
|+++++++++++++++++++++++++++++++++++ | 70% ~08s
|++++++++++++++++++++++++++++++++++++ | 71% ~07s
|++++++++++++++++++++++++++++++++++++ | 72% ~07s
|+++++++++++++++++++++++++++++++++++++ | 73% ~07s
|+++++++++++++++++++++++++++++++++++++ | 74% ~07s
|++++++++++++++++++++++++++++++++++++++ | 75% ~06s
|++++++++++++++++++++++++++++++++++++++ | 76% ~06s
|+++++++++++++++++++++++++++++++++++++++ | 77% ~06s
|+++++++++++++++++++++++++++++++++++++++ | 78% ~06s
|++++++++++++++++++++++++++++++++++++++++ | 79% ~05s
|++++++++++++++++++++++++++++++++++++++++ | 80% ~05s
|+++++++++++++++++++++++++++++++++++++++++ | 81% ~05s
|+++++++++++++++++++++++++++++++++++++++++ | 82% ~05s
|++++++++++++++++++++++++++++++++++++++++++ | 83% ~04s
|++++++++++++++++++++++++++++++++++++++++++ | 84% ~04s
|+++++++++++++++++++++++++++++++++++++++++++ | 85% ~04s
|+++++++++++++++++++++++++++++++++++++++++++ | 86% ~04s
|++++++++++++++++++++++++++++++++++++++++++++ | 87% ~03s
|++++++++++++++++++++++++++++++++++++++++++++ | 88% ~03s
|+++++++++++++++++++++++++++++++++++++++++++++ | 89% ~03s
|+++++++++++++++++++++++++++++++++++++++++++++ | 90% ~03s
|++++++++++++++++++++++++++++++++++++++++++++++ | 91% ~02s
|++++++++++++++++++++++++++++++++++++++++++++++ | 92% ~02s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 93% ~02s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 94% ~02s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 95% ~01s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~01s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~01s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~01s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=26s
Calculating cluster LSEC (high MT 1)
| | 0 % ~calculating
|+ | 1 % ~02m 19s
|++ | 2 % ~02m 18s
|++ | 3 % ~02m 16s
|+++ | 4 % ~02m 16s
|+++ | 5 % ~02m 14s
|++++ | 6 % ~02m 13s
|++++ | 7 % ~02m 11s
|+++++ | 8 % ~02m 09s
|+++++ | 9 % ~02m 08s
|++++++ | 10% ~02m 06s
|++++++ | 11% ~02m 05s
|+++++++ | 12% ~02m 03s
|+++++++ | 13% ~02m 02s
|++++++++ | 14% ~02m 00s
|++++++++ | 15% ~01m 59s
|+++++++++ | 16% ~01m 57s
|+++++++++ | 18% ~01m 56s
|++++++++++ | 19% ~01m 54s
|++++++++++ | 20% ~01m 53s
|+++++++++++ | 21% ~01m 51s
|+++++++++++ | 22% ~01m 50s
|++++++++++++ | 23% ~01m 49s
|++++++++++++ | 24% ~01m 47s
|+++++++++++++ | 25% ~01m 46s
|+++++++++++++ | 26% ~01m 44s
|++++++++++++++ | 27% ~01m 43s
|++++++++++++++ | 28% ~01m 41s
|+++++++++++++++ | 29% ~01m 40s
|+++++++++++++++ | 30% ~01m 38s
|++++++++++++++++ | 31% ~01m 37s
|++++++++++++++++ | 32% ~01m 35s
|+++++++++++++++++ | 33% ~01m 34s
|++++++++++++++++++ | 34% ~01m 33s
|++++++++++++++++++ | 35% ~01m 31s
|+++++++++++++++++++ | 36% ~01m 30s
|+++++++++++++++++++ | 37% ~01m 28s
|++++++++++++++++++++ | 38% ~01m 27s
|++++++++++++++++++++ | 39% ~01m 25s
|+++++++++++++++++++++ | 40% ~01m 24s
|+++++++++++++++++++++ | 41% ~01m 23s
|++++++++++++++++++++++ | 42% ~01m 21s
|++++++++++++++++++++++ | 43% ~01m 20s
|+++++++++++++++++++++++ | 44% ~01m 18s
|+++++++++++++++++++++++ | 45% ~01m 17s
|++++++++++++++++++++++++ | 46% ~01m 16s
|++++++++++++++++++++++++ | 47% ~01m 14s
|+++++++++++++++++++++++++ | 48% ~01m 13s
|+++++++++++++++++++++++++ | 49% ~01m 11s
|++++++++++++++++++++++++++ | 51% ~01m 10s
|++++++++++++++++++++++++++ | 52% ~01m 08s
|+++++++++++++++++++++++++++ | 53% ~01m 07s
|+++++++++++++++++++++++++++ | 54% ~01m 05s
|++++++++++++++++++++++++++++ | 55% ~01m 04s
|++++++++++++++++++++++++++++ | 56% ~01m 02s
|+++++++++++++++++++++++++++++ | 57% ~01m 01s
|+++++++++++++++++++++++++++++ | 58% ~60s
|++++++++++++++++++++++++++++++ | 59% ~58s
|++++++++++++++++++++++++++++++ | 60% ~57s
|+++++++++++++++++++++++++++++++ | 61% ~55s
|+++++++++++++++++++++++++++++++ | 62% ~54s
|++++++++++++++++++++++++++++++++ | 63% ~52s
|++++++++++++++++++++++++++++++++ | 64% ~51s
|+++++++++++++++++++++++++++++++++ | 65% ~49s
|+++++++++++++++++++++++++++++++++ | 66% ~48s
|++++++++++++++++++++++++++++++++++ | 67% ~47s
|+++++++++++++++++++++++++++++++++++ | 68% ~45s
|+++++++++++++++++++++++++++++++++++ | 69% ~44s
|++++++++++++++++++++++++++++++++++++ | 70% ~42s
|++++++++++++++++++++++++++++++++++++ | 71% ~41s
|+++++++++++++++++++++++++++++++++++++ | 72% ~40s
|+++++++++++++++++++++++++++++++++++++ | 73% ~38s
|++++++++++++++++++++++++++++++++++++++ | 74% ~37s
|++++++++++++++++++++++++++++++++++++++ | 75% ~36s
|+++++++++++++++++++++++++++++++++++++++ | 76% ~34s
|+++++++++++++++++++++++++++++++++++++++ | 77% ~33s
|++++++++++++++++++++++++++++++++++++++++ | 78% ~31s
|++++++++++++++++++++++++++++++++++++++++ | 79% ~30s
|+++++++++++++++++++++++++++++++++++++++++ | 80% ~28s
|+++++++++++++++++++++++++++++++++++++++++ | 81% ~27s
|++++++++++++++++++++++++++++++++++++++++++ | 82% ~25s
|++++++++++++++++++++++++++++++++++++++++++ | 84% ~24s
|+++++++++++++++++++++++++++++++++++++++++++ | 85% ~22s
|+++++++++++++++++++++++++++++++++++++++++++ | 86% ~21s
|++++++++++++++++++++++++++++++++++++++++++++ | 87% ~19s
|++++++++++++++++++++++++++++++++++++++++++++ | 88% ~18s
|+++++++++++++++++++++++++++++++++++++++++++++ | 89% ~16s
|+++++++++++++++++++++++++++++++++++++++++++++ | 90% ~15s
|++++++++++++++++++++++++++++++++++++++++++++++ | 91% ~13s
|++++++++++++++++++++++++++++++++++++++++++++++ | 92% ~12s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 93% ~10s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 94% ~09s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 95% ~07s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~06s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~04s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~03s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=02m 23s
Calculating cluster LSEC (interferon)
| | 0 % ~calculating
|+ | 1 % ~03m 12s
|++ | 2 % ~03m 12s
|++ | 3 % ~03m 11s
|+++ | 4 % ~03m 09s
|+++ | 5 % ~03m 06s
|++++ | 6 % ~03m 04s
|++++ | 7 % ~03m 02s
|+++++ | 8 % ~03m 00s
|+++++ | 9 % ~02m 58s
|++++++ | 10% ~02m 56s
|++++++ | 11% ~02m 54s
|+++++++ | 12% ~02m 52s
|+++++++ | 13% ~02m 50s
|++++++++ | 14% ~02m 48s
|++++++++ | 15% ~02m 46s
|+++++++++ | 16% ~02m 44s
|+++++++++ | 17% ~02m 42s
|++++++++++ | 18% ~02m 40s
|++++++++++ | 19% ~02m 39s
|+++++++++++ | 20% ~02m 36s
|+++++++++++ | 21% ~02m 35s
|++++++++++++ | 22% ~02m 33s
|++++++++++++ | 23% ~02m 31s
|+++++++++++++ | 24% ~02m 29s
|+++++++++++++ | 26% ~02m 27s
|++++++++++++++ | 27% ~02m 25s
|++++++++++++++ | 28% ~02m 23s
|+++++++++++++++ | 29% ~02m 21s
|+++++++++++++++ | 30% ~02m 19s
|++++++++++++++++ | 31% ~02m 17s
|++++++++++++++++ | 32% ~02m 15s
|+++++++++++++++++ | 33% ~02m 13s
|+++++++++++++++++ | 34% ~02m 11s
|++++++++++++++++++ | 35% ~02m 09s
|++++++++++++++++++ | 36% ~02m 07s
|+++++++++++++++++++ | 37% ~02m 05s
|+++++++++++++++++++ | 38% ~02m 03s
|++++++++++++++++++++ | 39% ~02m 01s
|++++++++++++++++++++ | 40% ~01m 59s
|+++++++++++++++++++++ | 41% ~01m 57s
|+++++++++++++++++++++ | 42% ~01m 55s
|++++++++++++++++++++++ | 43% ~01m 53s
|++++++++++++++++++++++ | 44% ~01m 51s
|+++++++++++++++++++++++ | 45% ~01m 49s
|+++++++++++++++++++++++ | 46% ~01m 47s
|++++++++++++++++++++++++ | 47% ~01m 45s
|++++++++++++++++++++++++ | 48% ~01m 43s
|+++++++++++++++++++++++++ | 49% ~01m 41s
|+++++++++++++++++++++++++ | 50% ~01m 39s
|++++++++++++++++++++++++++ | 51% ~01m 37s
|+++++++++++++++++++++++++++ | 52% ~01m 35s
|+++++++++++++++++++++++++++ | 53% ~01m 33s
|++++++++++++++++++++++++++++ | 54% ~01m 31s
|++++++++++++++++++++++++++++ | 55% ~01m 29s
|+++++++++++++++++++++++++++++ | 56% ~01m 27s
|+++++++++++++++++++++++++++++ | 57% ~01m 25s
|++++++++++++++++++++++++++++++ | 58% ~01m 23s
|++++++++++++++++++++++++++++++ | 59% ~01m 21s
|+++++++++++++++++++++++++++++++ | 60% ~01m 19s
|+++++++++++++++++++++++++++++++ | 61% ~01m 17s
|++++++++++++++++++++++++++++++++ | 62% ~01m 15s
|++++++++++++++++++++++++++++++++ | 63% ~01m 13s
|+++++++++++++++++++++++++++++++++ | 64% ~01m 11s
|+++++++++++++++++++++++++++++++++ | 65% ~01m 09s
|++++++++++++++++++++++++++++++++++ | 66% ~01m 07s
|++++++++++++++++++++++++++++++++++ | 67% ~01m 05s
|+++++++++++++++++++++++++++++++++++ | 68% ~01m 03s
|+++++++++++++++++++++++++++++++++++ | 69% ~01m 01s
|++++++++++++++++++++++++++++++++++++ | 70% ~59s
|++++++++++++++++++++++++++++++++++++ | 71% ~57s
|+++++++++++++++++++++++++++++++++++++ | 72% ~55s
|+++++++++++++++++++++++++++++++++++++ | 73% ~53s
|++++++++++++++++++++++++++++++++++++++ | 74% ~51s
|++++++++++++++++++++++++++++++++++++++ | 76% ~49s
|+++++++++++++++++++++++++++++++++++++++ | 77% ~47s
|+++++++++++++++++++++++++++++++++++++++ | 78% ~45s
|++++++++++++++++++++++++++++++++++++++++ | 79% ~43s
|++++++++++++++++++++++++++++++++++++++++ | 80% ~41s
|+++++++++++++++++++++++++++++++++++++++++ | 81% ~39s
|+++++++++++++++++++++++++++++++++++++++++ | 82% ~37s
|++++++++++++++++++++++++++++++++++++++++++ | 83% ~35s
|++++++++++++++++++++++++++++++++++++++++++ | 84% ~33s
|+++++++++++++++++++++++++++++++++++++++++++ | 85% ~31s
|+++++++++++++++++++++++++++++++++++++++++++ | 86% ~29s
|++++++++++++++++++++++++++++++++++++++++++++ | 87% ~27s
|++++++++++++++++++++++++++++++++++++++++++++ | 88% ~25s
|+++++++++++++++++++++++++++++++++++++++++++++ | 89% ~23s
|+++++++++++++++++++++++++++++++++++++++++++++ | 90% ~21s
|++++++++++++++++++++++++++++++++++++++++++++++ | 91% ~18s
|++++++++++++++++++++++++++++++++++++++++++++++ | 92% ~16s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 93% ~14s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 94% ~12s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 95% ~10s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~08s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~06s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~04s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~02s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=03m 21s
Calculating cluster Periportal LSEC
| | 0 % ~calculating
|+ | 1 % ~01m 34s
|++ | 2 % ~01m 33s
|++ | 3 % ~01m 33s
|+++ | 4 % ~01m 32s
|+++ | 5 % ~01m 31s
|++++ | 6 % ~01m 30s
|++++ | 7 % ~01m 29s
|+++++ | 8 % ~01m 28s
|+++++ | 9 % ~01m 27s
|++++++ | 10% ~01m 26s
|++++++ | 11% ~01m 25s
|+++++++ | 12% ~01m 23s
|+++++++ | 13% ~01m 22s
|++++++++ | 14% ~01m 22s
|++++++++ | 15% ~01m 21s
|+++++++++ | 16% ~01m 20s
|+++++++++ | 18% ~01m 19s
|++++++++++ | 19% ~01m 18s
|++++++++++ | 20% ~01m 17s
|+++++++++++ | 21% ~01m 16s
|+++++++++++ | 22% ~01m 15s
|++++++++++++ | 23% ~01m 14s
|++++++++++++ | 24% ~01m 13s
|+++++++++++++ | 25% ~01m 12s
|+++++++++++++ | 26% ~01m 11s
|++++++++++++++ | 27% ~01m 10s
|++++++++++++++ | 28% ~01m 09s
|+++++++++++++++ | 29% ~01m 08s
|+++++++++++++++ | 30% ~01m 07s
|++++++++++++++++ | 31% ~01m 06s
|++++++++++++++++ | 32% ~01m 05s
|+++++++++++++++++ | 33% ~01m 04s
|++++++++++++++++++ | 34% ~01m 03s
|++++++++++++++++++ | 35% ~01m 02s
|+++++++++++++++++++ | 36% ~01m 01s
|+++++++++++++++++++ | 37% ~01m 00s
|++++++++++++++++++++ | 38% ~59s
|++++++++++++++++++++ | 39% ~58s
|+++++++++++++++++++++ | 40% ~57s
|+++++++++++++++++++++ | 41% ~56s
|++++++++++++++++++++++ | 42% ~55s
|++++++++++++++++++++++ | 43% ~54s
|+++++++++++++++++++++++ | 44% ~53s
|+++++++++++++++++++++++ | 45% ~52s
|++++++++++++++++++++++++ | 46% ~51s
|++++++++++++++++++++++++ | 47% ~50s
|+++++++++++++++++++++++++ | 48% ~49s
|+++++++++++++++++++++++++ | 49% ~48s
|++++++++++++++++++++++++++ | 51% ~47s
|++++++++++++++++++++++++++ | 52% ~46s
|+++++++++++++++++++++++++++ | 53% ~45s
|+++++++++++++++++++++++++++ | 54% ~44s
|++++++++++++++++++++++++++++ | 55% ~43s
|++++++++++++++++++++++++++++ | 56% ~42s
|+++++++++++++++++++++++++++++ | 57% ~41s
|+++++++++++++++++++++++++++++ | 58% ~40s
|++++++++++++++++++++++++++++++ | 59% ~39s
|++++++++++++++++++++++++++++++ | 60% ~38s
|+++++++++++++++++++++++++++++++ | 61% ~37s
|+++++++++++++++++++++++++++++++ | 62% ~36s
|++++++++++++++++++++++++++++++++ | 63% ~36s
|++++++++++++++++++++++++++++++++ | 64% ~35s
|+++++++++++++++++++++++++++++++++ | 65% ~34s
|+++++++++++++++++++++++++++++++++ | 66% ~33s
|++++++++++++++++++++++++++++++++++ | 67% ~32s
|+++++++++++++++++++++++++++++++++++ | 68% ~31s
|+++++++++++++++++++++++++++++++++++ | 69% ~30s
|++++++++++++++++++++++++++++++++++++ | 70% ~29s
|++++++++++++++++++++++++++++++++++++ | 71% ~28s
|+++++++++++++++++++++++++++++++++++++ | 72% ~27s
|+++++++++++++++++++++++++++++++++++++ | 73% ~26s
|++++++++++++++++++++++++++++++++++++++ | 74% ~25s
|++++++++++++++++++++++++++++++++++++++ | 75% ~24s
|+++++++++++++++++++++++++++++++++++++++ | 76% ~23s
|+++++++++++++++++++++++++++++++++++++++ | 77% ~22s
|++++++++++++++++++++++++++++++++++++++++ | 78% ~21s
|++++++++++++++++++++++++++++++++++++++++ | 79% ~20s
|+++++++++++++++++++++++++++++++++++++++++ | 80% ~19s
|+++++++++++++++++++++++++++++++++++++++++ | 81% ~18s
|++++++++++++++++++++++++++++++++++++++++++ | 82% ~17s
|++++++++++++++++++++++++++++++++++++++++++ | 84% ~16s
|+++++++++++++++++++++++++++++++++++++++++++ | 85% ~15s
|+++++++++++++++++++++++++++++++++++++++++++ | 86% ~14s
|++++++++++++++++++++++++++++++++++++++++++++ | 87% ~13s
|++++++++++++++++++++++++++++++++++++++++++++ | 88% ~12s
|+++++++++++++++++++++++++++++++++++++++++++++ | 89% ~11s
|+++++++++++++++++++++++++++++++++++++++++++++ | 90% ~10s
|++++++++++++++++++++++++++++++++++++++++++++++ | 91% ~09s
|++++++++++++++++++++++++++++++++++++++++++++++ | 92% ~08s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 93% ~07s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 94% ~06s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 95% ~05s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~04s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~03s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~02s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=01m 35s
Calculating cluster LSEC (fenestr.)
| | 0 % ~calculating
|+ | 1 % ~01m 60s
|++ | 2 % ~01m 60s
|++ | 3 % ~01m 59s
|+++ | 4 % ~01m 58s
|+++ | 5 % ~01m 56s
|++++ | 6 % ~01m 55s
|++++ | 7 % ~01m 53s
|+++++ | 8 % ~01m 52s
|+++++ | 9 % ~01m 51s
|++++++ | 10% ~01m 50s
|++++++ | 11% ~01m 48s
|+++++++ | 12% ~01m 49s
|+++++++ | 13% ~01m 47s
|++++++++ | 14% ~01m 46s
|++++++++ | 15% ~01m 45s
|+++++++++ | 16% ~01m 44s
|+++++++++ | 17% ~01m 42s
|++++++++++ | 18% ~01m 41s
|++++++++++ | 19% ~01m 40s
|+++++++++++ | 20% ~01m 38s
|+++++++++++ | 21% ~01m 37s
|++++++++++++ | 22% ~01m 36s
|++++++++++++ | 23% ~01m 35s
|+++++++++++++ | 24% ~01m 33s
|+++++++++++++ | 26% ~01m 32s
|++++++++++++++ | 27% ~01m 31s
|++++++++++++++ | 28% ~01m 29s
|+++++++++++++++ | 29% ~01m 28s
|+++++++++++++++ | 30% ~01m 27s
|++++++++++++++++ | 31% ~01m 26s
|++++++++++++++++ | 32% ~01m 24s
|+++++++++++++++++ | 33% ~01m 23s
|+++++++++++++++++ | 34% ~01m 22s
|++++++++++++++++++ | 35% ~01m 21s
|++++++++++++++++++ | 36% ~01m 19s
|+++++++++++++++++++ | 37% ~01m 18s
|+++++++++++++++++++ | 38% ~01m 17s
|++++++++++++++++++++ | 39% ~01m 15s
|++++++++++++++++++++ | 40% ~01m 14s
|+++++++++++++++++++++ | 41% ~01m 13s
|+++++++++++++++++++++ | 42% ~01m 12s
|++++++++++++++++++++++ | 43% ~01m 10s
|++++++++++++++++++++++ | 44% ~01m 09s
|+++++++++++++++++++++++ | 45% ~01m 08s
|+++++++++++++++++++++++ | 46% ~01m 07s
|++++++++++++++++++++++++ | 47% ~01m 05s
|++++++++++++++++++++++++ | 48% ~01m 04s
|+++++++++++++++++++++++++ | 49% ~01m 03s
|+++++++++++++++++++++++++ | 50% ~01m 02s
|++++++++++++++++++++++++++ | 51% ~01m 00s
|+++++++++++++++++++++++++++ | 52% ~59s
|+++++++++++++++++++++++++++ | 53% ~58s
|++++++++++++++++++++++++++++ | 54% ~57s
|++++++++++++++++++++++++++++ | 55% ~56s
|+++++++++++++++++++++++++++++ | 56% ~54s
|+++++++++++++++++++++++++++++ | 57% ~53s
|++++++++++++++++++++++++++++++ | 58% ~52s
|++++++++++++++++++++++++++++++ | 59% ~50s
|+++++++++++++++++++++++++++++++ | 60% ~49s
|+++++++++++++++++++++++++++++++ | 61% ~48s
|++++++++++++++++++++++++++++++++ | 62% ~47s
|++++++++++++++++++++++++++++++++ | 63% ~45s
|+++++++++++++++++++++++++++++++++ | 64% ~44s
|+++++++++++++++++++++++++++++++++ | 65% ~43s
|++++++++++++++++++++++++++++++++++ | 66% ~42s
|++++++++++++++++++++++++++++++++++ | 67% ~40s
|+++++++++++++++++++++++++++++++++++ | 68% ~39s
|+++++++++++++++++++++++++++++++++++ | 69% ~38s
|++++++++++++++++++++++++++++++++++++ | 70% ~36s
|++++++++++++++++++++++++++++++++++++ | 71% ~35s
|+++++++++++++++++++++++++++++++++++++ | 72% ~34s
|+++++++++++++++++++++++++++++++++++++ | 73% ~33s
|++++++++++++++++++++++++++++++++++++++ | 74% ~31s
|++++++++++++++++++++++++++++++++++++++ | 76% ~30s
|+++++++++++++++++++++++++++++++++++++++ | 77% ~29s
|+++++++++++++++++++++++++++++++++++++++ | 78% ~28s
|++++++++++++++++++++++++++++++++++++++++ | 79% ~26s
|++++++++++++++++++++++++++++++++++++++++ | 80% ~25s
|+++++++++++++++++++++++++++++++++++++++++ | 81% ~24s
|+++++++++++++++++++++++++++++++++++++++++ | 82% ~23s
|++++++++++++++++++++++++++++++++++++++++++ | 83% ~21s
|++++++++++++++++++++++++++++++++++++++++++ | 84% ~20s
|+++++++++++++++++++++++++++++++++++++++++++ | 85% ~19s
|+++++++++++++++++++++++++++++++++++++++++++ | 86% ~18s
|++++++++++++++++++++++++++++++++++++++++++++ | 87% ~16s
|++++++++++++++++++++++++++++++++++++++++++++ | 88% ~15s
|+++++++++++++++++++++++++++++++++++++++++++++ | 89% ~14s
|+++++++++++++++++++++++++++++++++++++++++++++ | 90% ~13s
|++++++++++++++++++++++++++++++++++++++++++++++ | 91% ~11s
|++++++++++++++++++++++++++++++++++++++++++++++ | 92% ~10s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 93% ~09s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 94% ~08s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 95% ~06s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~05s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~04s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~03s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=02m 03s
Calculating cluster Lymphatic EC
| | 0 % ~calculating
|+ | 1 % ~02m 14s
|+ | 2 % ~02m 13s
|++ | 3 % ~02m 13s
|++ | 4 % ~02m 11s
|+++ | 5 % ~02m 10s
|+++ | 6 % ~02m 09s
|++++ | 7 % ~02m 11s
|++++ | 8 % ~02m 10s
|+++++ | 9 % ~02m 08s
|+++++ | 10% ~02m 06s
|++++++ | 11% ~02m 05s
|++++++ | 12% ~02m 11s
|+++++++ | 13% ~02m 08s
|+++++++ | 14% ~02m 06s
|++++++++ | 15% ~02m 04s
|++++++++ | 16% ~02m 02s
|+++++++++ | 17% ~02m 00s
|+++++++++ | 18% ~01m 59s
|++++++++++ | 19% ~01m 57s
|++++++++++ | 20% ~01m 55s
|+++++++++++ | 21% ~01m 54s
|+++++++++++ | 22% ~01m 52s
|++++++++++++ | 23% ~01m 50s
|++++++++++++ | 24% ~01m 49s
|+++++++++++++ | 25% ~01m 47s
|+++++++++++++ | 26% ~01m 45s
|++++++++++++++ | 27% ~01m 44s
|++++++++++++++ | 28% ~01m 42s
|+++++++++++++++ | 29% ~01m 41s
|+++++++++++++++ | 30% ~01m 39s
|++++++++++++++++ | 31% ~01m 38s
|++++++++++++++++ | 32% ~01m 36s
|+++++++++++++++++ | 33% ~01m 35s
|+++++++++++++++++ | 34% ~01m 33s
|++++++++++++++++++ | 35% ~01m 32s
|++++++++++++++++++ | 36% ~01m 30s
|+++++++++++++++++++ | 37% ~01m 29s
|+++++++++++++++++++ | 38% ~01m 27s
|++++++++++++++++++++ | 39% ~01m 26s
|++++++++++++++++++++ | 40% ~01m 25s
|+++++++++++++++++++++ | 41% ~01m 24s
|+++++++++++++++++++++ | 42% ~01m 23s
|++++++++++++++++++++++ | 43% ~01m 22s
|++++++++++++++++++++++ | 44% ~01m 21s
|+++++++++++++++++++++++ | 45% ~01m 19s
|+++++++++++++++++++++++ | 46% ~01m 18s
|++++++++++++++++++++++++ | 47% ~01m 16s
|++++++++++++++++++++++++ | 48% ~01m 15s
|+++++++++++++++++++++++++ | 49% ~01m 13s
|+++++++++++++++++++++++++ | 50% ~01m 12s
|++++++++++++++++++++++++++ | 51% ~01m 10s
|++++++++++++++++++++++++++ | 52% ~01m 09s
|+++++++++++++++++++++++++++ | 53% ~01m 07s
|+++++++++++++++++++++++++++ | 54% ~01m 06s
|++++++++++++++++++++++++++++ | 55% ~01m 04s
|++++++++++++++++++++++++++++ | 56% ~01m 03s
|+++++++++++++++++++++++++++++ | 57% ~01m 01s
|+++++++++++++++++++++++++++++ | 58% ~60s
|++++++++++++++++++++++++++++++ | 59% ~58s
|++++++++++++++++++++++++++++++ | 60% ~57s
|+++++++++++++++++++++++++++++++ | 61% ~55s
|+++++++++++++++++++++++++++++++ | 62% ~54s
|++++++++++++++++++++++++++++++++ | 63% ~53s
|++++++++++++++++++++++++++++++++ | 64% ~51s
|+++++++++++++++++++++++++++++++++ | 65% ~50s
|+++++++++++++++++++++++++++++++++ | 66% ~48s
|++++++++++++++++++++++++++++++++++ | 67% ~47s
|++++++++++++++++++++++++++++++++++ | 68% ~45s
|+++++++++++++++++++++++++++++++++++ | 69% ~44s
|+++++++++++++++++++++++++++++++++++ | 70% ~42s
|++++++++++++++++++++++++++++++++++++ | 71% ~41s
|++++++++++++++++++++++++++++++++++++ | 72% ~40s
|+++++++++++++++++++++++++++++++++++++ | 73% ~38s
|+++++++++++++++++++++++++++++++++++++ | 74% ~37s
|++++++++++++++++++++++++++++++++++++++ | 75% ~35s
|++++++++++++++++++++++++++++++++++++++ | 76% ~34s
|+++++++++++++++++++++++++++++++++++++++ | 77% ~32s
|+++++++++++++++++++++++++++++++++++++++ | 78% ~31s
|++++++++++++++++++++++++++++++++++++++++ | 79% ~30s
|++++++++++++++++++++++++++++++++++++++++ | 80% ~28s
|+++++++++++++++++++++++++++++++++++++++++ | 81% ~27s
|+++++++++++++++++++++++++++++++++++++++++ | 82% ~25s
|++++++++++++++++++++++++++++++++++++++++++ | 83% ~24s
|++++++++++++++++++++++++++++++++++++++++++ | 84% ~23s
|+++++++++++++++++++++++++++++++++++++++++++ | 85% ~21s
|+++++++++++++++++++++++++++++++++++++++++++ | 86% ~20s
|++++++++++++++++++++++++++++++++++++++++++++ | 87% ~18s
|++++++++++++++++++++++++++++++++++++++++++++ | 88% ~17s
|+++++++++++++++++++++++++++++++++++++++++++++ | 89% ~15s
|+++++++++++++++++++++++++++++++++++++++++++++ | 90% ~14s
|++++++++++++++++++++++++++++++++++++++++++++++ | 91% ~13s
|++++++++++++++++++++++++++++++++++++++++++++++ | 92% ~11s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 93% ~10s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 94% ~08s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 95% ~07s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~06s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~04s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~03s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=02m 19s
Calculating cluster Cycling cells
| | 0 % ~calculating
|+ | 1 % ~02m 53s
|+ | 2 % ~02m 52s
|++ | 3 % ~02m 50s
|++ | 4 % ~02m 48s
|+++ | 5 % ~02m 47s
|+++ | 6 % ~02m 45s
|++++ | 7 % ~02m 43s
|++++ | 8 % ~02m 41s
|+++++ | 9 % ~02m 39s
|+++++ | 10% ~02m 38s
|++++++ | 11% ~02m 36s
|++++++ | 12% ~02m 34s
|+++++++ | 13% ~02m 33s
|+++++++ | 14% ~02m 31s
|++++++++ | 15% ~02m 29s
|++++++++ | 16% ~02m 27s
|+++++++++ | 17% ~02m 26s
|+++++++++ | 18% ~02m 24s
|++++++++++ | 19% ~02m 22s
|++++++++++ | 20% ~02m 20s
|+++++++++++ | 21% ~02m 19s
|+++++++++++ | 22% ~02m 17s
|++++++++++++ | 23% ~02m 15s
|++++++++++++ | 24% ~02m 13s
|+++++++++++++ | 25% ~02m 12s
|+++++++++++++ | 26% ~02m 10s
|++++++++++++++ | 27% ~02m 08s
|++++++++++++++ | 28% ~02m 06s
|+++++++++++++++ | 29% ~02m 05s
|+++++++++++++++ | 30% ~02m 03s
|++++++++++++++++ | 31% ~02m 01s
|++++++++++++++++ | 32% ~01m 59s
|+++++++++++++++++ | 33% ~01m 58s
|+++++++++++++++++ | 34% ~01m 56s
|++++++++++++++++++ | 35% ~01m 54s
|++++++++++++++++++ | 36% ~01m 52s
|+++++++++++++++++++ | 37% ~01m 51s
|+++++++++++++++++++ | 38% ~01m 49s
|++++++++++++++++++++ | 39% ~01m 47s
|++++++++++++++++++++ | 40% ~01m 45s
|+++++++++++++++++++++ | 41% ~01m 44s
|+++++++++++++++++++++ | 42% ~01m 42s
|++++++++++++++++++++++ | 43% ~01m 40s
|++++++++++++++++++++++ | 44% ~01m 38s
|+++++++++++++++++++++++ | 45% ~01m 37s
|+++++++++++++++++++++++ | 46% ~01m 35s
|++++++++++++++++++++++++ | 47% ~01m 33s
|++++++++++++++++++++++++ | 48% ~01m 31s
|+++++++++++++++++++++++++ | 49% ~01m 29s
|+++++++++++++++++++++++++ | 50% ~01m 28s
|++++++++++++++++++++++++++ | 51% ~01m 26s
|++++++++++++++++++++++++++ | 52% ~01m 24s
|+++++++++++++++++++++++++++ | 53% ~01m 23s
|+++++++++++++++++++++++++++ | 54% ~01m 21s
|++++++++++++++++++++++++++++ | 55% ~01m 19s
|++++++++++++++++++++++++++++ | 56% ~01m 17s
|+++++++++++++++++++++++++++++ | 57% ~01m 15s
|+++++++++++++++++++++++++++++ | 58% ~01m 14s
|++++++++++++++++++++++++++++++ | 59% ~01m 12s
|++++++++++++++++++++++++++++++ | 60% ~01m 10s
|+++++++++++++++++++++++++++++++ | 61% ~01m 08s
|+++++++++++++++++++++++++++++++ | 62% ~01m 07s
|++++++++++++++++++++++++++++++++ | 63% ~01m 05s
|++++++++++++++++++++++++++++++++ | 64% ~01m 03s
|+++++++++++++++++++++++++++++++++ | 65% ~01m 01s
|+++++++++++++++++++++++++++++++++ | 66% ~60s
|++++++++++++++++++++++++++++++++++ | 67% ~58s
|++++++++++++++++++++++++++++++++++ | 68% ~56s
|+++++++++++++++++++++++++++++++++++ | 69% ~54s
|+++++++++++++++++++++++++++++++++++ | 70% ~53s
|++++++++++++++++++++++++++++++++++++ | 71% ~51s
|++++++++++++++++++++++++++++++++++++ | 72% ~49s
|+++++++++++++++++++++++++++++++++++++ | 73% ~47s
|+++++++++++++++++++++++++++++++++++++ | 74% ~46s
|++++++++++++++++++++++++++++++++++++++ | 75% ~44s
|++++++++++++++++++++++++++++++++++++++ | 76% ~42s
|+++++++++++++++++++++++++++++++++++++++ | 77% ~41s
|+++++++++++++++++++++++++++++++++++++++ | 78% ~39s
|++++++++++++++++++++++++++++++++++++++++ | 79% ~37s
|++++++++++++++++++++++++++++++++++++++++ | 80% ~35s
|+++++++++++++++++++++++++++++++++++++++++ | 81% ~33s
|+++++++++++++++++++++++++++++++++++++++++ | 82% ~32s
|++++++++++++++++++++++++++++++++++++++++++ | 83% ~30s
|++++++++++++++++++++++++++++++++++++++++++ | 84% ~28s
|+++++++++++++++++++++++++++++++++++++++++++ | 85% ~26s
|+++++++++++++++++++++++++++++++++++++++++++ | 86% ~25s
|++++++++++++++++++++++++++++++++++++++++++++ | 87% ~23s
|++++++++++++++++++++++++++++++++++++++++++++ | 88% ~21s
|+++++++++++++++++++++++++++++++++++++++++++++ | 89% ~19s
|+++++++++++++++++++++++++++++++++++++++++++++ | 90% ~18s
|++++++++++++++++++++++++++++++++++++++++++++++ | 91% ~16s
|++++++++++++++++++++++++++++++++++++++++++++++ | 92% ~14s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 93% ~12s
|+++++++++++++++++++++++++++++++++++++++++++++++ | 94% ~11s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 95% ~09s
|++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~07s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~05s
|+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~04s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~02s
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=02m 55s
write.csv(mkend_simp[mkend_simp$p_val_adj<=0.05,],
file = "results/endothelial/markers_endo_subpop_simp.csv", row.names = T, quote = F)
Normalise, PCA, UMAP
lsec_list = list(lsec_end_cells = only_end_cells[,only_end_cells$pca25_res.0.9 %in% c(0, 1, 3, 12)])
Get DPT
h_lsec_list = list()
for(n in names(lsec_list)){
h_lsec_list[[n]] = lsec_list[[n]][,lsec_list[[n]]$Condition=="healthy"]
h_lsec_list[[n]] = suppressWarnings(SCTransform(h_lsec_list[[n]], do.correct.umi = T, verbose = F,
vars.to.regress=c("unique_name","nCount_RNA"),
variable.features.rv.th = 1, seed.use = 1,
return.only.var.genes = F,
variable.features.n = NULL))
h_lsec_list[[n]] = RunPCA(h_lsec_list[[n]], verbose = F)
h_lsec_list[[n]] = RunUMAP(h_lsec_list[[n]], dims = 1:20, verbose = F)
}
Plot DPT as violin
We’re using subset 2 - only bona fide LSEC
for(n in names(h_lsec_list)){
plot_df = data.frame(row.names = rownames(dpt_l[[n]]@branch),
"cl" = h_lsec_list[[n]]$endo_simp,
"dpt" = getDPT(dpt_l[[n]]))
plt = ggplot(plot_df, aes(y = cl, x = dpt, fill = cl))+
geom_boxplot()+
labs(title = n)+
theme_bw()+
theme(axis.text.x = element_text(size = 7.5))
print(plt)
}
Plot pseudotime as boxplot
Find genes varying along the pseudotime
plot_df = data.frame(row.names = rownames(dpt@branch),
"cl" = sub_2$endo_simp,
"dpt" = getDPT(dpt))
plt = ggplot(plot_df, aes(y = cl, x = rank(dpt), fill = cl))+
geom_boxplot()+
theme_bw()+
theme(axis.text.x = element_text(size = 7.5))
print(plt)
Now use the top genes to learn the pseudozonation coordinates and project the embolised and regenerating data
df_dc = cbind(sub_2@meta.data,
data.frame("DC1" = dpt@dm$DC1, "DC2" = dpt@dm$DC2,
"DPT" = scales::rescale(rank(getDPT(dpt)), c(0.00001, 0.99999))))
# will only use variable genes
hvg = sub_2@assays$SCT@var.features
# Fit GAM for each gene using pseudotime as independent variable.
t = df_dc$DPT
gene_fit_p = c()
gene_fit_vals = data.frame(row.names = 1:100)
for(i in 1:length(hvg)){
g = hvg[i]
z = sub_2@assays$SCT@data[g,]
d = data.frame(z=z, t=t)
tmp = suppressMessages(gam(z ~ ns(t, df = 3), data=d))
# bins for model fitting
bb = seq(min(t), max(t), length.out = 100)
gene_fit_vals[,g] = suppressMessages(predict(tmp,
newdata = data.frame(t = bb)))
p = summary(tmp)$parametric.anova$`Pr(>F)`[1]
gene_fit_p = c(gene_fit_p, p)
names(gene_fit_p)[length(gene_fit_p)] = g
}
gene_fit_p = fdrtool::fdrtool(gene_fit_p, statistic="pvalue", plot=F,
verbose=F, cutoff.method="pct0", pct0=0.9)$qval
sig_genes = gene_fit_p[gene_fit_p<=0.05]
top_sig_genes = names(sig_genes[order(sig_genes, decreasing = F)][1:1000])
top_sig_genes = top_sig_genes[top_sig_genes %in% rownames(only_end_cells@assays$SCT@data)]
data_gam_h = cbind(data.frame("DPT" = df_dc$DPT),
Matrix::t(sub_2@assays$SCT@data[top_sig_genes,]))
gam_healthy = gam::gam(DPT ~ ., data = data_gam_h,
family = mgcv::betar(link = "logit", eps = 0.00001))
all_pred = predict(gam_healthy,
Matrix::t(only_end_cells@assays$SCT@data[top_sig_genes,]), type= "response")
goodcl = only_end_cells$pca25_res.0.9 %in% sub_2$pca25_res.0.9
all_pred_sub = all_pred[goodcl & only_end_cells$Condition!="healthy" | names(all_pred) %in% colnames(sub_2)]
traj_list = list("healthy" = data_gam_h$DPT,
"embolised" = all_pred[goodcl & only_end_cells$Condition!="embolised"],
"regenerating" = all_pred[goodcl & only_end_cells$Condition!="regenerating"])
only_end_cells = AddMetaData(only_end_cells,
data.frame("zonation_pt" = all_pred,
"goodcl" = colnames(only_end_cells) %in% names(all_pred_sub)))
only_end_cells@meta.data[rownames(data_gam_h),"zonation_pt"] = data_gam_h$DPT
plot_df = only_end_cells@meta.data[names(all_pred_sub),]
plot_df$bins100 = cut(plot_df$zonation_pt, 10)
plot_df$Condition = factor(plot_df$Condition, levels = c("healthy", "embolised", "regenerating"))
ggplot(plot_df, aes(x = bins100, fill = endo_simp))+
facet_wrap(~Condition)+
geom_bar()+
labs(x = "zonation (binned)", y = "Number of cells")+
scale_y_continuous(expand = c(0,0))+
coord_flip()+
guides(fill = guide_legend(title.position = "top"))+
theme_classic()+
theme(axis.text.y = element_blank(),
strip.background = element_rect(fill = colcond),
legend.title.align = 0,
legend.position = "bottom")
VlnPlot(only_end_cells[,names(all_pred_sub)], features = "nCount_RNA",
group.by = "endo_simp", split.by = "Condition")
ggplot(plot_df, aes(x = zonation_pt, y = endo_simp, fill = endo_simp))+
facet_wrap(~Condition)+
geom_violin()+
labs(x = "zonation", y = "clusters")+
scale_x_continuous(expand = c(0,0))+
guides(fill = guide_legend(title.position = "top"))+
theme_bw()+
theme(axis.text.y = element_blank(),
legend.title.align = 0,
legend.position = "bottom")
Do cross validation on the healthy trajectory
plot_df = only_end_cells@meta.data
plot_df$pt = all_pred[colnames(only_end_cells)]
plot_df$bins100 = cut(plot_df$pt, 10)
plot_df$Condition = factor(plot_df$Condition, levels = c("healthy", "embolised", "regenerating"))
ggplot(plot_df, aes(x = pt, y = endo_simp, fill = endo_simp))+
facet_wrap(~Condition)+
geom_violin()+
labs(x = "zonation", y = "clusters")+
scale_x_continuous(expand = c(0,0))+
guides(fill = guide_legend(title.position = "top", reverse = T))+
theme_bw()+
theme(axis.text.y = element_blank(),
legend.title.align = 0,
legend.position = "right")
Find varying genes - using all cells along the ranked pseudotime
sig_genes = gene_fit_p[gene_fit_p<=0.05]
top_sig_genes = names(sig_genes[order(sig_genes, decreasing = F)][1:1000])
data_gam_h = cbind(data.frame("DPT" = traj_list$healthy),
Matrix::t(sub_2@assays$SCT@data[top_sig_genes,]))
colnames(data_gam_h) = gsub("-", "_", colnames(data_gam_h), fixed = T)
colnames(data_gam_h) = gsub(".", "_", colnames(data_gam_h), fixed = T)
cv_gam = CVgam(data = data_gam_h, formula = DPT ~ ., nfold = 10, seed = 1, method = "glm.fit")
CV-mse-GAM
0.044
pdf("results/endothelial/end_original_fitted_pseudotime.pdf", useDingbats = F,
width = 6, height = 5)
plot(data_gam_h$DPT, cv_gam$fitted, xlab = "Healthy pseudotime",ylab = "Predicted Healthy",
main = paste0("Healthy original vs fitted pseudotime\nMSE: ", round(cv_gam$cvscale, 6)),
pch = 19, cex = 0.5)
abline(0,1, col = "blue", lwd = 3)
dev.off()
null device
1
plot_df = data.frame("original" = data_gam_h$DPT, "predicted" = cv_gam$fitted)
plot_df$cl = sub_2@meta.data$endo_simp
ggplot(plot_df, aes(x = original, y = predicted, colour = cl))+geom_point()
Correlate genes between conditions
## get varying genes for each condition
numCores = 12 #larger values resulted in problems
start_time <- Sys.time()
cond_fit_list = list()
only_end_cells_bf = only_end_cells[,only_end_cells$pca25_res.0.9 %in% sub_2$pca25_res.0.9]
only_end_cells_split = SplitObject(only_end_cells_bf, split.by = "Condition")
for(cond in names(only_end_cells_split)){
print(cond)
sub_dat = only_end_cells_split[[cond]]
# Fit GAM for each gene using pseudotime as independent variable.
cond_fit_list[[cond]] = mclapply(hvg, fittingFunc, mc.cores = numCores)
}
[1] "healthy"
[1] "embolised"
[1] "regenerating"
end_fits_qval = list()
for(cond in names(cond_fit_list)){
fits_df = Reduce(cbind, lapply(cond_fit_list[[cond]], function(x) x$fits))
pval_list = unlist(lapply(cond_fit_list[[cond]], function(x) x$pval))
names(pval_list) = hvg
pval_df = data.frame(pval_list)
end_fits_qval[[cond]] = list("fits" = fits_df, "pval" = pval_df,
"fdr" = apply(pval_df, 2, function(x) p.adjust(x, method = "fdr")))
}
end_time <- Sys.time()
end_time - start_time
Time difference of 2.806205 mins
saveRDS(end_fits_qval, file = "results/endothelial/end_fits_qval.RDS")
GO Term enrichment
g = "LYVE1"
plot(end_fits_qval$healthy$fits[,g])
points(end_fits_qval$embolised$fits[,g], col = "red")
points(end_fits_qval$regenerating$fits[,g], col = "blue")
all_var_genes = (end_fits_qval$healthy$fdr<=0.05 &
apply(end_fits_qval$healthy$fits, 2, function(x) diff(range(x))>=0.05)) |
(end_fits_qval$embolised$fdr<=0.05 &
apply(end_fits_qval$embolised$fits, 2, function(x) diff(range(x))>=0.05)) |
(end_fits_qval$regenerating$fdr<=0.05 &
apply(end_fits_qval$regenerating$fits, 2, function(x) diff(range(x))>=0.05))
end_cor_he = sapply(rownames(all_var_genes)[all_var_genes],
function(g) cor(end_fits_qval$healthy$fits[,g],end_fits_qval$embolised$fits[,g],
method = "sp"), simplify = T)
end_cor_hr = sapply(rownames(all_var_genes)[all_var_genes],
function(g) cor(end_fits_qval$healthy$fits[,g],end_fits_qval$regenerating$fits[,g],
method = "sp"), simplify = T)
end_cor_er = sapply(rownames(all_var_genes)[all_var_genes],
function(g) cor(end_fits_qval$embolised$fits[,g],end_fits_qval$regenerating$fits[,g],
method = "sp"), simplify = T)
cor_g_df = data.frame("gene" = names(end_cor_he),
"HvE" = end_cor_he, "HvR" = end_cor_hr, "EvR" = end_cor_er)
write.csv(cor_g_df, file = "results/endothelial/correlations_zonation_endothelial.csv",
row.names = T, quote = F)
Plot top genes in correlation
got_cor = list()
eg_all = clusterProfiler::bitr(colnames(end_fits_qval$healthy$fits), fromType="SYMBOL",
toType="ENTREZID", OrgDb="org.Hs.eg.db")
'select()' returned 1:1 mapping between keys and columns
10.73% of input gene IDs are fail to map...
eg = clusterProfiler::bitr(names(end_cor_he)[end_cor_he<0.3], fromType="SYMBOL",
toType="ENTREZID", OrgDb="org.Hs.eg.db")
'select()' returned 1:1 mapping between keys and columns
5.94% of input gene IDs are fail to map...
got = clusterProfiler::enrichGO(gene = eg$ENTREZID, universe = eg_all$ENTREZID,
OrgDb = org.Hs.eg.db, ont = "BP", pvalueCutoff = 0.01,
qvalueCutoff = 0.05,
pAdjustMethod = "BH", readable = T)
got_cor[["notcor_he"]] = getTopTerms(got@result[got@result$p.adjust<=0.05,], ncl = 4, nt = 2, topt = 1000)
eg = clusterProfiler::bitr(names(end_cor_he)[end_cor_he>=0.3], fromType="SYMBOL",
toType="ENTREZID", OrgDb="org.Hs.eg.db")
'select()' returned 1:1 mapping between keys and columns
4.83% of input gene IDs are fail to map...
got = clusterProfiler::enrichGO(gene = eg$ENTREZID, universe = eg_all$ENTREZID,
OrgDb = org.Hs.eg.db, ont = "BP", pvalueCutoff = 0.01,
qvalueCutoff = 0.05,
pAdjustMethod = "BH", readable = T)
got_cor[["cor_he"]] = getTopTerms(got@result[got@result$p.adjust<=0.05,], ncl = 4, nt = 2, topt = 1000)
eg = clusterProfiler::bitr(names(end_cor_hr)[end_cor_hr<0.3], fromType="SYMBOL",
toType="ENTREZID", OrgDb="org.Hs.eg.db")
'select()' returned 1:1 mapping between keys and columns
5.79% of input gene IDs are fail to map...
got = clusterProfiler::enrichGO(gene = eg$ENTREZID, universe = eg_all$ENTREZID,
OrgDb = org.Hs.eg.db, ont = "BP", pvalueCutoff = 0.01,
qvalueCutoff = 0.05,
pAdjustMethod = "BH", readable = T)
got_cor[["notcor_hr"]] = getTopTerms(got@result[got@result$p.adjust<=0.05,], ncl = 4, nt = 2, topt = 1000)
eg = clusterProfiler::bitr(names(end_cor_hr)[end_cor_hr>=0.3], fromType="SYMBOL",
toType="ENTREZID", OrgDb="org.Hs.eg.db")
'select()' returned 1:1 mapping between keys and columns
4.9% of input gene IDs are fail to map...
got = clusterProfiler::enrichGO(gene = eg$ENTREZID, universe = eg_all$ENTREZID,
OrgDb = org.Hs.eg.db, ont = "BP", pvalueCutoff = 0.01,
qvalueCutoff = 0.05,
pAdjustMethod = "BH", readable = T)
got_cor[["cor_hr"]] = getTopTerms(got@result[got@result$p.adjust<=0.05,], ncl = 4, nt = 2, topt = 1000)
saveRDS(got_cor, file = "results/endothelial/GOTerms_correlations.RDS")
Save Seurat with predictions
topgenes = unique(c(names(end_cor_he[order(end_cor_he, decreasing = T)])[1:30],
names(end_cor_hr[order(end_cor_hr, decreasing = T)])[1:30]))
bottomgenes = unique(c(names(end_cor_he[order(end_cor_he, decreasing = F)])[1:30],
names(end_cor_hr[order(end_cor_hr, decreasing = F)])[1:30]))
usegenes = c(topgenes, bottomgenes)
bins_list = list()
for(n in names(only_end_cells_split)){
plot_df = cbind(data.frame("pt" = rep(1:10, each = 10)),end_fits_qval[[n]]$fits[,usegenes])
plot_df$bins10 = cut(plot_df$pt, 10)
bins_list[[n]] = sapply(usegenes, function(x) scale(tapply(plot_df[,x], plot_df$bins10, mean))[10:1])
}
bins_mean = Reduce(rbind, bins_list)
hct = hclust(dist(t(bins_list$healthy[,topgenes])), method = "ward.D2")
ord_bot_h = apply(bins_list$healthy[,bottomgenes], 2, which.max)
ord_bot_e = apply(bins_list$embolised[,bottomgenes], 2, which.max)
ord_bot_r = apply(bins_list$regenerating[,bottomgenes], 2, which.max)
ord_df = data.frame(ord_bot_h, ord_bot_e, ord_bot_r)
ord_bot = rownames(ord_df)[with(ord_df, order(ord_bot_h, ord_bot_e, ord_bot_r, decreasing = T))]
ord = c(topgenes[hct$order], ord_bot)
pheatmap::pheatmap(bins_mean[,ord], show_rownames = F, fontsize_col = 6.5, border_color = NA,
gaps_row = c(10,20), gaps_col = c(length(topgenes)),
clustering_method = "ward.D2", cluster_rows = F, cluster_cols = F)